lambda 키워드로 익명함수를 만듭니다.
In [ ]:
(lambda x: x*x)(10)
리스트 컴프리헨션으로 제곱 값을 구합니다.
In [ ]:
[x*x for x in range(5)]
맵 함수는 람다함수를 넘겨서 반복적인 작업을 수행한 후 그 결과값을 모아서 리턴합니다. 맵 함수는 제너레이터처럼 실행됩니다.
In [ ]:
m = map(lambda x: x*x, [3, 4])
In [ ]:
next(m)
In [ ]:
next(m)
In [ ]:
list(map(lambda x: x*x, range(5)))
람다 함수를 변수에 저장하여 사용하면 일반 함수와 동일합니다.
In [ ]:
sqr = lambda x: x*x
list(map(sqr, range(5)))
In [ ]:
sqr.__class__
In [ ]:
def sqr2(x):
return x*x
list(map(sqr2, range(5)))
In [ ]:
sqr2.__class__
필터는 리턴 값이 참인 것만 리스트로 돌려 줍니다.
홀수 리스트를 만들기 위해 필터를 사용하지 않는 버전, 필터와 함수를 사용한 버전, 필터와 람다 함수를 사용한 버전을 각각 확인해 보세요.
In [ ]:
def odd(p):
return [i for i in p if i%2]
odd(range(10))
In [ ]:
def odd(k):
return k%2
list(filter(odd, range(10)))
In [ ]:
list(filter(lambda x: x%2, range(10)))
리듀스는 파라메타의 값들을 모두 누적합니다.
In [ ]:
from functools import reduce
In [ ]:
reduce(lambda x, y: x+y, range(10))
In [ ]:
reduce(lambda x, y: x+y, 'abcde')
In [ ]:
reduce(lambda x, y: y+x, 'abcde')
두개의 람다함수를 리스트에 할당하고 선택적으로 사용할 수 있습니다.
In [ ]:
func_choice = [lambda x, y: x**y, lambda x, y: x/y]
In [ ]:
func_choice[0].__class__
In [ ]:
func_choice[0](10, 2)
In [ ]:
func_choice[1](10, 2)
In [ ]:
def f1(x, y):
return x**y
In [ ]:
def f2(x, y):
return x/y
In [ ]:
func_choice2 = [f1, f2]
In [ ]:
func_choice2[0](10, 2)
In [ ]:
func_choice2[1](10, 2)
In [ ]: